<?php
/**
 * 任务小应用
 * (c)2010-2099
 */

!defined('Q_PATH') && exit;

class UserController extends InitController{

	/**
	 * 注册一个用户
	 */
	public function register(){
		// 判断是否已经登录
		if($GLOBALS['___login___']!==false){
			$this->E('你已经是注册会员。');
		}

		$this->display();
	}

	/**
	 * 注册一个用户
	 */
	public function insert(){
		// 判断是否已经登录
		if($GLOBALS['___login___']!==false){
			$this->E('你已经是注册会员。');
		}

		// 创建模型
		$oModel=new UserModel();

		// 保存数据
		$oModel->save();

		// 开始查找错误
		if(!$oModel->isError()){
			$this->assign('__JumpUrl__',Q::U('index/index'));
			$this->S('数据保存成功！');
		}else{
			$this->E($oModel->getErrorMessage());
		}
	}

	/**
	 * 登录
	 */
	public function login(){
		// 判断是否已经登录
		if($GLOBALS['___login___']!==false){
			$this->E('你已经登录过了。');
		}

		$this->display();
	}

	/**
	 * 登录验证
	 */
	public function check_login(){
		// 取得登录用户信息
		$sUserName=trim(Q::G('user_name','P'));
		$sPassword=trim(Q::G('user_password','P'));

		// 账号不能为空
		if(empty($sUserName)){
			$this->E('帐号或者E-mail不能为空！');
		}elseif (empty($sPassword)){
			$this->E('密码不能为空！');
		}

		// 登录验证
		$oMember=UserModel::F(array('user_name'=>$sUserName))->getOne();
		if(empty($oMember->user_id)){
			$this->E('我们无法找到这个用户');
		}

		if($oMember->user_status<1){// 查看用户是否禁用
			$this->E('用户的账户还没有解锁，你暂时无法登录');
		}

		if(md5($sPassword)!=$oMember->user_password){
			$this->E('用户的密码错误');
		}

		// 这里测试用，未对cookie加密，实际中必须加密
		Q::cookie('user_login',serialize($oMember->toArray()));

		$this->assign('__JumpUrl__',Q::U('index/index'));
		$this->assign('__WaitSecond__',3);

		$this->S(sprintf('Hello %s,你成功登录！',$sUserName));
	}

	/**
	 * 登出
	 */
	public function logout(){
		if($GLOBALS['___login___']!==false){
			Q::cookie('user_login',null,CURRENT_TIMESTAMP-8640000);
			$this->assign('__JumpUrl__',Q::U('user/login'));
			$this->S('登出成功');
		}else{
			$this->E('你已经登出');
		}
	}

	public function change_password(){
		// 判断是否已经登录
		if($GLOBALS['___login___']===false){
			$this->E('你没有登录');
		}

		$this->display();
	}

	public function change_the_password(){
		// 判断是否已经登录
		if($GLOBALS['___login___']===false){
			$this->E('你没有登录');
		}

		// 取得已经登录后的用户信息
		$arrUserData=$GLOBALS['___login___'];

		// 取得用户相关信息
		$sPassword=trim(Q::G('user_password','P'));
		$sNewPassword=trim(Q::G('new_password','P'));
		$sOldPassword=trim(Q::G('old_password','P'));

		if($sOldPassword==''){
			$this->E('旧密码不能为空');
		}

		if($sPassword==''){
			$this->E('新密码不能为空');
		}

		if($sPassword!=$sNewPassword){
			$this->E('两次输入的密码不一致');
		}

		if(strlen($sNewPassword)<6){
			$this->E('密码不能少于 6 个字符');
		}

		// 修改密码
		$oMember=UserModel::F(array('user_name'=>$arrUserData['user_name']))->query();

		if(empty($oMember['user_id'])){
			$this->E('我们无法找到这个用户');
		}

		if(md5($sOldPassword)!=$oMember->user_password){
			$this->E('用户输入的旧密码错误');
		}

		$oMember->changeProp('user_password',md5($sNewPassword));
		$oMember->save('update');
		if($oMember->isError()){
			$this->E('密码修改失败：'.$oMember->gerErrorMessage());
		}

		Q::cookie('user_login',null,CURRENT_TIMESTAMP-8640000);

		$this->assign('__JumpUrl__',Q::U('user/login'));
		$this->S('密码修改成功，你需要重新登录！');
	}

}
